import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import './src/vite-env.d.ts'
import path from 'path'

// interface ConfigEnv extends Record<string, string> {
//   VITE_HOST: string
//   VITE_PORT: string
//   VITE_BASE_URL: string
//   VITE_PROXY_DOMAIN: string
// }
// https://vitejs.dev/config/
// export default defineConfig({
//   plugins: [vue()],
// })

export default defineConfig(({ mode }) => {
  console.log('mode: ', mode)
  const env = loadEnv(mode, process.cwd()) as ImportMetaEnv
  let server: Record<string, any> = {}
  console.log('env: ', env)
  if (mode === 'development') {
    console.log('开发环境')
    server = {
      port: env.VITE_PORT,
      host: env.VITE_HOST,
      proxy: {
        [env.VITE_BASE_URL]: {
          target: env.VITE_PROXY_DOMAIN,
        },
      },
    }
  } else if (mode === 'production') {
    console.log('生产环境')
    server = {
      port: env.VITE_PORT,
      host: env.VITE_HOST,
    }
  }
  return {
    plugins: [vue()],
    baseUrl: '/',
    resolve: {
      alias: {
        // 和 tsconfig.json 中 paths设置别名的区别，
        //  paths 主要用于编译期间别名的设置。
        // 而 vite.config.ts  中别名的设置主要用于
        // cnpm run build 时检测 项目中的@路径
        '@': path.resolve(__dirname, 'src'),
      },
    },
    server,
  }
})
